module  dds_FM                    //K=300
(
input clkfc,rst_n,
input [3:0]shift,            //此处是以“k”为单位的
input [31:0]FM_date_k,
output [13:0]date_sin_FM

);
wire [31:0]date_af;
           
wire [31:0]date;
assign date_af=(shift==4'd10)?32'd42:32'd21;
wire[11:0]add_sin_1k;
wire[13:0]date_sin_1k;
sin1khz sin1khz_inst
(
	.rst_n(rst_n) ,	// input  rst_n_sig
	.clkfc(clkfc) ,	// input  clkfc_sig
	.add_sin_1k(add_sin_1k) ,	// output [19:0] add_sin_1k_sig
	.date_sin_1k(date_sin_1k) 	// output [13:0] date_sin_1k_sig
);

wire [45:0]date_sin_1k_46;
wire [31:0]date_sin_1k_result;  
mult_date_sin_1k	mult_date_sin_1k_inst (
	.dataa ( date_sin_1k ),
	.datab ( date_af ),
	.result ( date_sin_1k_46 )
	);
assign date_sin_1k_result=date_sin_1k_46[45:14];
assign date=FM_date_k+date_sin_1k_result;
reg [31:0]add_sin_FM;
always@(posedge clkfc,negedge rst_n)  //final signal
begin
 if(!rst_n)
  add_sin_FM<=32'd0;
 else
  begin
  add_sin_FM<=add_sin_FM+date;
  end
end
wire [11:0]add_sin_12_FM;
assign add_sin_12_FM=add_sin_FM[31:20];
sinrom_add12_date14	sinrom_add12_date14_inst (
	.address ( add_sin_12_FM ),
	.clock ( clkfc ),
	.q ( date_sin_FM )
	);
endmodule 